import java.awt.*;
import java.awt.event.*;

public class Cal {
public static void main(String[]args){
    CalFrame f=new CalFrame();
}
}
class CalFrame extends Frame{
  double dl,d2;
  int op=-1;
  TextField tf;
  CalPanelL p1;
  CalPanelR p2;
  
  CalFrame(){
      super("Small Calculator");
      
      setLayout(new FlowLayout(FlowLayout.CENTER,8,10));
      setBackground(new Color(100,150,150));
      setForeground(Color.white);
      setResizable(false);
      setSize(300,200);
      
      tf=new TextField(22);
      tf.setEditable(false);
      tf.setBackground(new Color(108,118,103));
      tf.setForeground(Color.white);
      tf.setFont(new Font("Arial",Font.BOLD,16));
      add(tf);
      p1=new CalPanelL();
      p2=new CalPanelR();
      add(p1);
      add(p2);
      setVisible(true);
    // addWindowListener(new Wclose());
  }
  class CalButton extends Button{
      CalButton(String s){
          super(s);
          setBackground(Color.gray);
      }
  }
  class CalPanelL extends Panel{
      CalButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bPN,bPoint;
      CalPanelL(){
          setLayout(new GridLayout(4,3));
          setFont(new Font("TimesRoman",Font.BOLD,16));
          b0=new CalButton("0");
          b1=new CalButton("1");
           b2=new CalButton("2");
            b3=new CalButton("3");
            b4=new CalButton("4");
             b5=new CalButton("5");
             b6=new CalButton("6");
             b7=new CalButton("7");
              b8=new CalButton("8");
               b9=new CalButton("9");
               bPN=new CalButton("+/-");
                bPoint=new CalButton(".");
                //加入按钮
        add(b7); b7.addActionListener(new PressB7());
        add(b8); b8.addActionListener(new PressB8());
         add(b9); b9.addActionListener(new PressB9());
          add(b4);b4.addActionListener(new PressB4());
           add(b5);b5.addActionListener(new PressB5());
            add(b6);b6.addActionListener(new PressB6());
             add(b1);b1.addActionListener(new PressB1());
            add(b2);b2.addActionListener(new PressB2());
            add(b3);b3.addActionListener(new PressB3());
             add(b0);b0.addActionListener(new PressB0());
           add(bPN);bPN.addActionListener(new PressBPN());
           add(bPoint);bPoint.addActoinListerer(new PressBpoint());
      }
  }
  class CalPanelR extends Panel{
      CalButton bAdd,bSub,bMul,bDiv,bSqrt,bSin,bCos,bYx,bLn,bEqual,bCE,bBack;
      CalPanelR(){
          setLayout(new GridLayout(4,3));
          setFont(new Font("TimesRoman",Font.BOLD,16));
          bAdd=new CalButton("+");
           bSub=new CalButton("-");
            bMul=new CalButton("*");
             bDiv=new CalButton("/");
              bSqrt=new CalButton("sqrt");
               bSin=new CalButton("sin");
                bCos=new CalButton("cos");
                 bYx=new CalButton("y^x");
                  bLn=new CalButton("ln");
           bEqual=new CalButton("=");
            bCE=new CalButton("+");
             bBack=new CalButton("+");
              add(bDiv);bDiv.addActionListener(new PressBDiv());
              add(bSqrt);bSqrt.addActionListener(new PressBSqrt());
              add(bLn);bLn.addActionListener(new PressBLn());
              add(bMul);bMul.addActionListener(new PressBMul());
              add(bSin);bSin.addActionListener(new PressBSin());
              add(bBack);bBack.addActionListener(new PressBBack());
              add(bSub);bSub.addActionListener(new PressBSub());
              add(bCos);bCos.addActionListener(new PressBCos());
              add(bCE);bCE.addActionListener(new PressBCE());
              add(bAdd);bAdd.addActionListener(new PressBAdd());
              add(bYx);bYx.addActionListener(new PressBYx());
              add(bEqual);bEqual.addActionListener(new PressBEqual());
      }
  }  
   class PressBAdd implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double d1 = Double.parseDouble(tf.getText());
               op=0;
               tf.setText("");
           }
           catch(Exception ee){}
       }
   }
   class PressBSub implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double d1 = Double.parseDouble(tf.getText());
               op=1;
               tf.setText("");
           }
           catch(Exception ee){}
       }
   }
   class PressBMul implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double d1 = Double.parseDouble(tf.getText());
               op=2;
               tf.setText("");
           }
           catch(Exception ee){}
       }
   }
   class PressBDiv implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double d1 = Double.parseDouble(tf.getText());
               op=3;
               tf.setText("");
           }
           catch(Exception ee){}
       }}
   class PressBYx implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double d1 = Double.parseDouble(tf.getText());
               op=4;
               tf.setText("");
           }
           catch(Exception ee){}
       }}
   class PressBEqual implements ActionListener{
        private Object d1;
        private Object result;
       public void actionPerformed(ActionEvent e){
           try{
               d2=Double.parseDouble(tf.getText());
               switch(op){
                   case 0:
               {
                   double d1;
                   double result = d1+d2;
               }
                       break;
                   case 1:
               {
                   double d1;
                   double result = d1-d2;
               }
                       break;
                       case 2:
               {
                   double d1;
                   double result = d1*d2;
               }
                       break;
                           case 3:
               {
                   double d1;
                   double result = d1/d2;
               }
                       break;
                     case 4:
                       result=Math.pow(d1.d2);
                         break;
                         default;
               }
               tf.setText(String.valueOf(result));
           }
           catch(Exception ee){}
       }}
   class PressBSqrt implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double x=Double.perseDouble(tf.gitText());
               double y;
               y=Match.sqrt(x);
               tf.setText(y+"");
           }
           catch(Exception ee){}
       }}
   class press BLn implements ActionListner{
       public void actionPerformed(ActionEvent e){
           try{
               double x=Doble.parseDouble(tf.getText());
               double y;
               tf.setText(y+"");
           }
           catch(Exception ee){}
       }}
   class PressBSin implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double x=Double.parseDouble(tf.getText());
               double y;
               y=Math.sin(x);
               tf.setText(y="");
           }
           catch(Exception ee){}
       }}
   class PressBCos implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               double x=Double.parseDouble(tf.getText());
               double y;
               y=Math.Cos(x);
               tf.setText(y="");
           }
           catch(Exception ee){}
       }}
   class PressBBack implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               String text=tf.getText();
               text=text.substring(0,text.length()-1);
               tf.setText(text);
           }
           catch(Exception ee){}
       }}
    class PressBCE implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               tf.setText(null);
           }} 
       class PressBBPN implements ActionListener{
       public void actionPerformed(ActionEvent e){
           try{
               String text=tf.getText();
               if(text!=""){
               tf.setTextcharAt(0)=='_')
               tf.setText(text.substring(1));
               else if(text.charAt(0)>&&text.charAt(0)<='9')
                   tf.setText("_0"+text.substring(0));
               }
               catch(Exception ee){}
           }}
       class PressBPonit implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           if(text.lastIndexOf(".")==-1);
       }}
        class PressB0 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"0");
       }}
        class PressB1 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"1");
       }}
       
        class PressB2 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"2");
       }}
           class PressB3 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"3");
       }}
            class PressB4 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"4");
       }}
    class PressB5 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"5");
       }}
    class PressB6 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"6");
       }}
     class PressB7 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"7");
       }}
      class PressB8 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"8");
       }}
       class PressB9 implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"9");
       }}
        class PressBO implements ActionListener{
       public void actionPerformed(ActionEvent e){
           String text=tf.getText();
           tf.setText(text+"0");
       }}
   
   
   
   
   
   
   
   
   
   
   
               
               
               
               
               
               
               
   
       }
  
  
  
  
  
  
  
  
  
      }
      
      
              
      
      
      
      
      
      
      
      
      
      
      
      
  }
    
    
}
